package com.dragon.modules.yuegou.service.wallet;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.modules.yuegou.entity.wallet.CardPresentEntity;
import com.dragon.modules.yuegou.model.wallet.CardPresent;
import com.dragon.modules.yuegou.model.wallet.MemberCard;

import java.util.List;
/**
 * 悦卡赠送 服务接口
 *
 * @author pbuilder generated
 * @date 2019-06-03 15:20:35
 * @version 2.0
 */
public interface CardPresentService extends IService<CardPresentEntity> {

	/**
	 * 生成提取码<br>
	 * 提取悦卡接口见CardExtractCodeService
	 * 
	 * @param memberId   会员ID
	 * @param cardNoList 会员悦卡卡号列表
	 * @return 赠送记录 (cardPresent, cardPresent.extractCodeList)
	 * @see CardExtractCodeService#extract(String, String)
	 */
	CardPresent generate(String memberId, List<String> cardNoList);

	/**
	 * 分享悦卡
	 * 
	 * @param memberId   会员ID
	 * @param cardNoList 会员悦卡卡号列表
	 * @return 赠送详情（cardPresent, cardPresent.extractCodeList,
	 *         cardPresent.extractCodeList.cardTemplate)
	 */
	CardPresent share(String memberId, List<String> cardNoList);

	/**
	 * 獲取赠送详情
	 * 
	 * @param presentId 赠送记录ID
	 * @return 赠送详情（cardPresent, cardPresent.extractCodeList,
	 *         cardPresent.extractCodeList.cardTemplate)
	 */
	CardPresent getDetailById(String presentId);

	/**
	 * 拒绝接受赠送
	 * 
	 * @param memberId  会员ID，被赠人
	 * @param presentId 赠送记录ID, 必须来自分享类型的赠送
	 */
	void reject(String memberId, String presentId);

	/**
	 * 领取赠送的悦卡
	 * 
	 * @param memberId  会员ID，被赠人
	 * @param presentId 赠送记录ID, 必须来自分享类型的赠送
	 * @return 领取的会员悦卡
	 */
	List<MemberCard> receive(String memberId, String presentId);

	/**
	 * 提取单张赠送的悦卡
	 *
	 * @param memberId  会员ID，被赠人
	 * @param code 提取单张
	 * @return 领取的会员悦卡
	 */
	MemberCard extract(String memberId, String code);
}